package com.example.photo_album.utils;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.util.ResourceUtils;
import org.springframework.web.multipart.MultipartFile;

import java.io.*;
import java.util.ArrayList;
import java.util.UUID;


@Component
public class MyFileUploadUtils {


    @Value("${uploadDir}")
    public String uploadDir;

//    ArrayList arrayList = new ArrayList<>();
//    /*
//     * 返回服务器上传好的图片地址
//     * */
//    public ArrayList<String> save(MultipartFile[] multipartFiles){
//        OutputStream os = null;
//        InputStream inputStream = null;
//        String fileName = null;
//        String uuidName = "";
//        for (MultipartFile multipartFile:multipartFiles
//        ) {
//            try {
//                inputStream = multipartFile.getInputStream();
//                fileName = multipartFile.getOriginalFilename();
//                //生成UUID
//                String uuid = UUID.randomUUID().toString();
//                uuidName = uuid + fileName;
//                //定义文件保存路径
//                String path = ResourceUtils.getURL("classpath:").getPath() + "static/" + uploadDir + "/";
//
//                // 2、保存到临时文件
//                // 1K的数据缓冲
//                byte[] bs = new byte[1024];
//                // 读取到的数据长度
//                int len;
//                // 输出的文件流保存到本地文件
//                File tempFile = new File(path);
//                if (!tempFile.exists()) {
//                    tempFile.mkdirs();
//                }
//
//                String filePath = tempFile.getPath() + File.separator + uuidName;
//                os = new FileOutputStream(filePath);
//                // 开始读取
//                while ((len = inputStream.read(bs)) != -1) {
//                    os.write(bs, 0, len);
//                }
//            } catch (IOException e) {
//                e.printStackTrace();
//            } finally {
//                // 完毕，关闭所有链接
//                try {
//                    os.close();
//                    inputStream.close();
//                } catch (IOException e) {
//                    e.printStackTrace();
//                }
//            }
//        }
//        //写入完成后，把文件名称通过list返回
//        arrayList.add(uuidName);
//        System.out.println(arrayList);
//        System.out.println(uuidName);
//        return arrayList;
//    }

    public String seve(MultipartFile multipartFile){
        OutputStream os = null;
        InputStream inputStream = null;
        String uuidName = null;
        String uuid = UUID.randomUUID().toString();
        try {
            //创建流
            inputStream = multipartFile.getInputStream();
            //获取文件名称
            String filename = multipartFile.getOriginalFilename();
            //定义保存路径
            String path = ResourceUtils.getURL("classpath:").getPath() + "static/" + uploadDir + "/";
            // 1K的数据缓冲
            byte[] bs = new byte[1024];
            // 读取到的数据长度
            int len;
            // 输出的文件流保存到本地文件
            File tempFile = new File(path);
            if (!tempFile.exists()) {
                tempFile.mkdirs();
            }

            //文件保存名称和路径
            uuidName =uuid+filename;
            String filePath = tempFile.getPath() + File.separator + uuidName;
            //创建输出流
            os = new FileOutputStream(filePath);
            // 开始读取
            while ((len = inputStream.read(bs)) != -1) {
                os.write(bs, 0, len);
            }

        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            // 完毕，关闭所有链接
            try {
                os.close();
                inputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return uuidName;
    }


}
